/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import java.rmi.Remote;
import java.rmi.RemoteException;

/**
 *
 * @author Cleiton
 */
public interface Roteador extends Remote {

    /**
     * Recebe um pacote de um nó.
     * @param pacote
     * @throws RemoteException 
     */
    public void receberMensagem(Pacote pacote) throws RemoteException;

    /**
     * Altera a rede configurando para qual roteador e qual host eles estão ligados.
     * @param rede
     * @throws RemoteException
     */
    public void setRede(String[][] rede) throws RemoteException;

    /**
     * Adiciona um host ao roteador
     * Este host vai pertencer a subrede do roteador.
     * @param name do host para se realizar a conexão com o mesmo.
     * @param endereçoIp endereço do ip do host a ser adicionado
     * @throws RemoteException
     */
    public void addHost(String name, String endereçoIp) throws RemoteException;

    /**
     * Adicino um roteador vizinho ao roteador.
     * @param name do roteator para fazer a conexão 
     * @param ip Endereço ip dp Roteador para conseguir realizar conexão com o mesmo.
     * @throws RemoteException
     */
    public void addVizinhos(String name, String ip) throws RemoteException;

    /**
     * Altera a rede do roteador , caso esta tenha sido mal configurada.
     * @throws RemoteException
     */
    public void alterarRede() throws RemoteException;

    /**
     * Limpa a interface grafica do roteador.
     * @throws RemoteException
     */
    public void limparTelas() throws RemoteException;

    /**
     * 
     * @param beelmanFord Se true ira usar o algoritmo de bellmanFord
     * false usa o algoritmo de Djikstra
     * @throws RemoteException 
     */
    public void alterarAlgoritmo(boolean beelmanFord) throws RemoteException;

    public void criarNo(Integer vizinhos[], String nomes[]) throws RemoteException;

    public void executaBellman() throws RemoteException;
    public void recebevetordovizinho(String novizinho, Integer vetorVizinho[])throws RemoteException;

}
